SequenceInputStream Class

Java Technologies - জাভা টাপল (Java Tuples)
157
157

SequenceInputStream জাভার java.io প্যাকেজের একটি ক্লাস যা একাধিক ইনপুট স্ট্রিমের মধ্যে ডেটা একত্রে পড়ে। এটি একাধিক ইনপুট স্ট্রিমকে একটি ধারাবাহিক স্ট্রিম হিসেবে ব্যবহার করতে সহায়ক, যেখানে এক ইনপুট স্ট্রিমের ডেটা পড়ে শেষ হওয়ার পরে পরবর্তী ইনপুট স্ট্রিম থেকে ডেটা পড়া হয়। এটি সাধারণত যখন একাধিক ফাইল বা স্ট্রিমের ডেটা একত্রে পড়তে হয়, তখন ব্যবহৃত হয়।

SequenceInputStream ক্লাসের বৈশিষ্ট্য

  1. Multiple Streams: এটি একাধিক ইনপুট স্ট্রিমকে একটি স্ট্রিমে একত্রিত করে।
  2. Sequential Access: এক স্ট্রিমের ডেটা পড়ে শেষ হলে, এটি পরবর্তী স্ট্রিমের ডেটা পড়তে চলে।
  3. Read Method: স্ট্রিমের ডেটা পড়ার জন্য read() মেথড ব্যবহার করা হয়, এবং স্ট্রিম শেষ হলে এটি পরবর্তী ইনপুট স্ট্রিমে চলে যায়।
  4. EOF Handling: যদি সব ইনপুট স্ট্রিমের ডেটা পড়া শেষ হয়ে যায়, তাহলে এটি EOFException ফেলে।

SequenceInputStream এর নির্মাণকারক

SequenceInputStream(InputStream s1, InputStream s2)
  • এটি দুটি ইনপুট স্ট্রিমকে একত্রিত করে।
SequenceInputStream(Enumeration<? extends InputStream> e)
  • এটি একটি Enumeration অবজেক্ট থেকে একাধিক ইনপুট স্ট্রিম গ্রহণ করে।

SequenceInputStream ব্যবহার করার উদাহরণ

১. দুটি ফাইল একত্রিত করে পড়া

ধরি, আমাদের দুটি ফাইল file1.txt এবং file2.txt আছে, এবং আমরা এগুলোর কনটেন্ট একসাথে পড়তে চাই।

import java.io.FileInputStream;
import java.io.SequenceInputStream;
import java.io.IOException;

public class SequenceInputStreamExample {
    public static void main(String[] args) {
        try {
            // প্রথম ইনপুট ফাইল স্ট্রিম তৈরি
            FileInputStream file1 = new FileInputStream("file1.txt");

            // দ্বিতীয় ইনপুট ফাইল স্ট্রিম তৈরি
            FileInputStream file2 = new FileInputStream("file2.txt");

            // SequenceInputStream দ্বারা দুটি স্ট্রিম একত্রিত করা
            SequenceInputStream sequenceInputStream = new SequenceInputStream(file1, file2);

            int byteData;
            // একে একে ডেটা পড়া
            while ((byteData = sequenceInputStream.read()) != -1) {
                System.out.print((char) byteData); // ডেটা প্রদর্শন করা
            }

            // স্ট্রিম বন্ধ করা
            file1.close();
            file2.close();
            sequenceInputStream.close();

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

ব্যাখ্যা:

  • FileInputStream ক্লাস ব্যবহার করে দুটি ফাইলের ইনপুট স্ট্রিম তৈরি করা হয়েছে।
  • SequenceInputStream ব্যবহার করে দুটি ইনপুট স্ট্রিম একত্রিত করা হয়েছে, এবং তারপর read() মেথড ব্যবহার করে ডেটা পড়া হয়েছে।
  • char হিসেবে ডেটা কনভার্ট করে কনসোলে প্রদর্শন করা হয়েছে।

এখন, যদি file1.txt এবং file2.txt ফাইলের কন্টেন্ট এমন থাকে:

file1.txt:

Hello,

file2.txt:

World!

আউটপুট হবে:

Hello,
World!

২. Enumeration ব্যবহার করে একাধিক স্ট্রিম একত্রিত করা

এখানে আমরা Enumeration ব্যবহার করে একাধিক ইনপুট স্ট্রিমকে একত্রিত করব:

import java.io.FileInputStream;
import java.io.SequenceInputStream;
import java.io.IOException;
import java.util.Vector;

public class SequenceInputStreamEnumerationExample {
    public static void main(String[] args) {
        try {
            // একাধিক ইনপুট স্ট্রিম তৈরি
            FileInputStream file1 = new FileInputStream("file1.txt");
            FileInputStream file2 = new FileInputStream("file2.txt");
            FileInputStream file3 = new FileInputStream("file3.txt");

            // ইনপুট স্ট্রিমগুলো একটি ভেক্টরে রাখা
            Vector<FileInputStream> fileStreams = new Vector<>();
            fileStreams.add(file1);
            fileStreams.add(file2);
            fileStreams.add(file3);

            // Enumeration তৈরি
            Enumeration<FileInputStream> e = fileStreams.elements();

            // SequenceInputStream দিয়ে একাধিক স্ট্রিম একত্রিত করা
            SequenceInputStream sequenceInputStream = new SequenceInputStream(e);

            int byteData;
            // একে একে ডেটা পড়া
            while ((byteData = sequenceInputStream.read()) != -1) {
                System.out.print((char) byteData); // ডেটা প্রদর্শন করা
            }

            // স্ট্রিম বন্ধ করা
            sequenceInputStream.close();
            file1.close();
            file2.close();
            file3.close();

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

ব্যাখ্যা:

  • এখানে Vector ক্লাস ব্যবহার করা হয়েছে FileInputStream গুলিকে একটি Enumeration এ পরিণত করতে।
  • তারপর SequenceInputStream ব্যবহার করে এই সব স্ট্রিমকে একত্রিত করা হয়েছে এবং একে একে ডেটা পড়া হয়েছে।

SequenceInputStream এর সুবিধা:

  1. Multiple Stream Handling:
    • একাধিক ইনপুট স্ট্রিমকে সহজে একত্রিত করে একটি স্ট্রিমের মাধ্যমে ডেটা পড়তে সক্ষম।
  2. Memory Efficient:
    • এটি একে একে স্ট্রিম থেকে ডেটা পড়ে, তাই মেমরি ব্যবহারের জন্য কার্যকরী।
  3. Flexible with Enumeration:
    • Enumeration ব্যবহার করে অনেকগুলো ইনপুট স্ট্রিম একত্রিত করা যায়।

সীমাবদ্ধতা:

  1. Sequential Access Only:
    • SequenceInputStream স্ট্রিমগুলোতে কেবল sequential access প্রদান করে, মানে আপনি একটি স্ট্রিম থেকে অন্য স্ট্রিমে যাত্রা করবেন, আপনি র‍্যান্ডম অ্যাক্সেস করতে পারবেন না।
  2. No Rewind:
    • একবার স্ট্রিমের মধ্যে পয়েন্টার চলে গেলে তা পিছনে ফিরে আসা সম্ভব নয়, অর্থাৎ পয়েন্টার পুনরায় শুরু করা যায় না।

SequenceInputStream একটি খুবই শক্তিশালী ক্লাস যা একাধিক ইনপুট স্ট্রিমকে একত্রিত করতে সাহায্য করে। এটি ফাইলের মধ্যে ধারাবাহিকভাবে ডেটা পড়তে বা প্রসেস করতে অত্যন্ত কার্যকরী। এর সাথে Enumeration ব্যবহার করে একাধিক স্ট্রিম সহজেই একত্রিত করা যায়। তবে, এটি শুধুমাত্র sequential access প্রদান করে, যার কারণে কিছু সীমাবদ্ধতা রয়েছে।

Content added By

SequenceInputStream এর ভূমিকা

124
124

SequenceInputStream হল Java I/O ক্লাস যা একাধিক ইনপুট স্ট্রিমকে একত্রিত করে একটি স্ট্রিমে ডেটা পড়তে ব্যবহৃত হয়। এটি java.io প্যাকেজের অংশ, এবং এটি বিভিন্ন ইনপুট স্ট্রিমের একটি সিকোয়েন্স (sequence) তৈরি করে, যার মাধ্যমে আপনি একাধিক ইনপুট ফাইল বা সোর্স থেকে ডেটা পড়তে পারেন।

SequenceInputStream সাধারণত দুটি বা ততোধিক ইনপুট স্ট্রিমের ডেটা একত্রে পড়ার জন্য ব্যবহৃত হয়, যাতে তাদের একত্রিত আউটপুট পাওয়া যায়। এটি একটি কমপোজিট স্ট্রিম হিসাবে কাজ করে এবং তারপরে সেগুলিকে একটি স্ট্রিমের মতো পরিচালনা করতে দেয়।


SequenceInputStream এর বৈশিষ্ট্য

  1. Multiple Streams Joining: এটি একাধিক ইনপুট স্ট্রিমকে একত্রিত করে একটি স্ট্রিম তৈরি করতে ব্যবহৃত হয়।
  2. Stream Order: এটি ইনপুট স্ট্রিমের সিকোয়েন্স অনুযায়ী ডেটা পড়ে। যখন প্রথম ইনপুট স্ট্রিমের ডেটা শেষ হয়, তখন এটি পরবর্তী স্ট্রিম থেকে ডেটা পড়তে শুরু করে।
  3. Ease of Use: এটি ম্যানুয়ালি একাধিক স্ট্রিমের ডেটা পড়ার জন্য সহজ উপায় সরবরাহ করে, যাতে একাধিক ফাইল বা সোর্সের ডেটা একসাথে ব্যবহার করা যায়।

SequenceInputStream এর প্রধান মেথড

মেথডবর্ণনা
int read()একটি বাইট পড়ে এবং রিটার্ন করে।
int read(byte[] b)বাফার থেকে একাধিক বাইট পড়ে এবং রিটার্ন করে।
long skip(long n)স্ট্রিম থেকে নির্দিষ্ট পরিমাণ বাইট উপেক্ষা (skip) করে।
void close()স্ট্রিমটি বন্ধ করে।
boolean available()পড়ার জন্য কতটুকু ডেটা এখনও বাকি আছে তা চেক করে।

SequenceInputStream এর উদাহরণ

একাধিক ইনপুট স্ট্রিম একত্রিত করা

ধরা যাক, আমাদের দুটি ইনপুট ফাইল রয়েছে এবং আমরা তাদের ডেটা একত্রে পড়তে চাই। আমরা SequenceInputStream ব্যবহার করে দুটি ফাইলের ডেটাকে একত্রিত করতে পারি।

কোড উদাহরণ:

import java.io.FileInputStream;
import java.io.IOException;
import java.io.SequenceInputStream;

public class SequenceInputStreamExample {
    public static void main(String[] args) {
        // দুটি ইনপুট স্ট্রিম তৈরি করা
        try (FileInputStream fis1 = new FileInputStream("file1.txt");
             FileInputStream fis2 = new FileInputStream("file2.txt");
             SequenceInputStream sis = new SequenceInputStream(fis1, fis2)) {

            int byteData;
            while ((byteData = sis.read()) != -1) {  // দুটি স্ট্রিম থেকে একে একে ডেটা পড়া
                System.out.print((char) byteData);  // পড়া ডেটা কনসোলে প্রিন্ট
            }
            
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

উদাহরণ ফাইল 1 (file1.txt):

This is the content of file 1.

উদাহরণ ফাইল 2 (file2.txt):

This is the content of file 2.

আউটপুট:

This is the content of file 1.This is the content of file 2.

SequenceInputStream এর সুবিধা

  1. Multiple Sources Handling: একাধিক ইনপুট স্ট্রিমের ডেটা একত্রে পরিচালনা করা সহজ।
  2. Stream Combination: স্ট্রিমের বিভিন্ন অংশকে একটি সংযুক্ত স্ট্রিমে পরিণত করার জন্য এটি কার্যকর।
  3. Convenient for Merging Files: একাধিক ফাইল বা সোর্সের ডেটা একত্রিত করার জন্য উপযুক্ত।

SequenceInputStream এর সীমাবদ্ধতা

  1. Read Once: একটি স্ট্রিমের ডেটা একবার পড়া হলে, সেই ডেটা পুনরায় পড়া সম্ভব হয় না।
  2. Limited Flexibility: এতে সীমাবদ্ধভাবে শুধুমাত্র দুটি স্ট্রিম যোগ করা যায় (যদিও Vector ব্যবহার করে একাধিক স্ট্রিম যোগ করা যেতে পারে)।
  3. Error Handling: একাধিক স্ট্রিম নিয়ে কাজ করার সময় আরও উন্নত error handling প্রয়োজন।

Java Tuples এর সাথে SequenceInputStream ব্যবহার

আপনি Java Tuples ব্যবহার করে SequenceInputStream এর আউটপুট সংরক্ষণ করতে পারেন। উদাহরণস্বরূপ, আপনি SequenceInputStream থেকে পড়া ডেটা এবং স্ট্রিমের অবস্থান Tuple এ সংরক্ষণ করতে পারেন।

কোড উদাহরণ: SequenceInputStream এর আউটপুট Tuple ব্যবহার করে সংরক্ষণ

import java.io.FileInputStream;
import java.io.IOException;
import java.io.SequenceInputStream;
import org.apache.commons.lang3.tuple.Pair;

public class SequenceInputStreamWithTuple {
    public static void main(String[] args) {
        try (FileInputStream fis1 = new FileInputStream("file1.txt");
             FileInputStream fis2 = new FileInputStream("file2.txt");
             SequenceInputStream sis = new SequenceInputStream(fis1, fis2)) {

            StringBuilder fileContent = new StringBuilder();
            int byteData;
            while ((byteData = sis.read()) != -1) {
                fileContent.append((char) byteData);
            }

            // Tuple ব্যবহার করে ফাইলের কন্টেন্ট এবং আকার সংরক্ষণ
            Pair<String, Integer> fileInfo = new Pair<>(fileContent.toString(), fileContent.length());
            System.out.println("File Content: " + fileInfo.getLeft());
            System.out.println("File Size: " + fileInfo.getRight() + " characters");

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

আউটপুট:

File Content: This is the content of file 1.This is the content of file 2.
File Size: 70 characters

  • SequenceInputStream Java I/O সিস্টেমে একাধিক ইনপুট স্ট্রিমকে একত্রিত করে একটি স্ট্রিমে ডেটা পড়তে ব্যবহৃত হয়।
  • এটি বিভিন্ন ফাইল বা ডেটা সোর্স থেকে একত্রিত ডেটা পড়তে সহজ করে তোলে।
  • Java Tuples ব্যবহার করে আপনি SequenceInputStream থেকে পড়া ডেটা এবং অন্যান্য প্রোপার্টি (যেমন সাইজ, নাম) একত্রে সংরক্ষণ করতে পারেন।

SequenceInputStream একাধিক ইনপুট স্ট্রিমের ডেটা একত্রিত করে পড়ার জন্য একটি শক্তিশালী টুল এবং Java Tuples ব্যবহার করে আপনি এই ডেটাকে আরও কার্যকরভাবে সংরক্ষণ করতে পারেন।

Content added By

Multiple InputStream এর মাধ্যমে Data Merging

146
146

SequenceInputStream একটি Java I/O ক্লাস যা multiple InputStream একত্রিত (merge) করে একটি একক স্ট্রিমে রূপান্তরিত করে। এটি বিভিন্ন InputStream থেকে ডেটা পড়ে এবং সেই ডেটা একটি ধারাবাহিক (sequential) স্ট্রিমে পাঠায়। এটি সাধারণত একাধিক ফাইল বা উৎস থেকে ডেটা একত্রে পড়ার জন্য ব্যবহৃত হয়।

SequenceInputStream দ্বারা বিভিন্ন ইনপুট স্ট্রিমের ডেটা একত্রিত করে একটি একক স্ট্রিমে পাঠানো যায়, যা ডেটার মার্জিং (merging) প্রক্রিয়া। এই ক্লাসটি দুটি বা তার বেশি InputStream কে একত্রে স্ট্রিমে রূপান্তরিত করে, যাতে একের পর এক তাদের ডেটা পড়া যায়।


SequenceInputStream এর ভূমিকা

  • ডেটার মার্জিং: একাধিক স্ট্রিমের ডেটা একত্রে পড়তে পারে, অর্থাৎ একাধিক ফাইল বা ইনপুট সোর্স থেকে ডেটা পড়ার জন্য এটি ব্যবহার করা হয়।
  • বহু উৎস থেকে ডেটা পড়া: একাধিক ফাইল বা অন্যান্য উৎসের ডেটা sequentialভাবে পড়া।
  • স্ট্রিমের একত্রিত করা: এটি দুটি বা তার বেশি InputStream কে একত্রে একক স্ট্রিমে মার্জ করে।

SequenceInputStream এর মেথড:

মেথডবর্ণনা
read()স্ট্রিম থেকে পরবর্তী বাইট পড়ে।
read(byte[] b)একটি বাফারে একাধিক বাইট পড়ে।
close()স্ট্রিমটি বন্ধ করে।
mark(int readlimit)স্ট্রিমের একটি পজিশন মার্ক করে, যাতে পরে তা থেকে ডেটা পড়া যায়।
reset()মার্ক করা অবস্থান থেকে পুনরায় পড়া শুরু করে।

Multiple InputStream এর মাধ্যমে Data Merging Example

SequenceInputStream উদাহরণ:

এই উদাহরণে, দুটি ফাইলের ডেটা একত্রিত করা হচ্ছে। SequenceInputStream ব্যবহার করে দুটি FileInputStream থেকে ডেটা sequentially পড়া হচ্ছে এবং শেষে সেই ডেটা একক আউটপুটে লেখা হচ্ছে।

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.SequenceInputStream;

public class SequenceInputStreamExample {
    public static void main(String[] args) {
        try {
            // দুটি ফাইলের ইনপুট স্ট্রিম তৈরি
            FileInputStream file1 = new FileInputStream("file1.txt");
            FileInputStream file2 = new FileInputStream("file2.txt");

            // SequenceInputStream ব্যবহার করে দুইটি ইনপুট স্ট্রিম মার্জ করা
            SequenceInputStream sequenceInputStream = new SequenceInputStream(file1, file2);

            // আউটপুট ফাইল স্ট্রিম তৈরি
            FileOutputStream fos = new FileOutputStream("mergedOutput.txt");

            int byteData;
            while ((byteData = sequenceInputStream.read()) != -1) {
                fos.write(byteData); // merged ডেটা আউটপুটে লেখা
            }

            // সমস্ত স্ট্রিম বন্ধ করা
            sequenceInputStream.close();
            fos.close();

            System.out.println("Files merged successfully!");

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

ব্যাখ্যা:

  1. FileInputStream দুটি ফাইল থেকে ডেটা পড়তে ব্যবহৃত হচ্ছে: file1.txt এবং file2.txt
  2. SequenceInputStream দুটি ইনপুট স্ট্রিমকে একত্রিত করে। এর মাধ্যমে একটানা দুই ফাইলের ডেটা পড়া হবে।
  3. FileOutputStream আউটপুট ফাইল হিসেবে mergedOutput.txt ফাইল তৈরি করে, যেখানে একত্রিত ডেটা লেখা হবে।

Multiple InputStream এর মাধ্যমে Data Merging এর প্রয়োগ

  1. একাধিক ফাইলের ডেটা একত্রিত করা: যখন একাধিক ফাইলের কন্টেন্ট একত্রিত করার প্রয়োজন হয়, তখন SequenceInputStream খুবই কার্যকরী।
  2. স্ট্রিম মার্জিং: কোনো বড় ডেটা সোর্স থেকে একাধিক অংশের ডেটা পড়তে হলে, যেমন বিভিন্ন নেটওয়ার্ক সেশনের ডেটা বা মেমরি থেকে ডেটা পড়া, তখন SequenceInputStream ব্যবহার করা যায়।
  3. ডেটা ম্যানিপুলেশন: যখন একাধিক উৎস থেকে ডেটা মার্জ করার পরে এটি প্রসেস করা প্রয়োজন, তখন এই পদ্ধতিটি খুবই উপকারী।

SequenceInputStream এর সুবিধা এবং সীমাবদ্ধতা

সুবিধা:

  1. সহজ মার্জিং: একাধিক ইনপুট স্ট্রিমকে একত্রিত করার জন্য একটি সহজ এবং সরল উপায়।
  2. স্বতন্ত্র ইনপুট স্ট্রিমের জন্য নমনীয়তা: এটি একাধিক উৎস থেকে ডেটা পড়তে সাহায্য করে, যেমন একাধিক ফাইল, নেটওয়ার্ক সেশন বা ডেটাবেস।
  3. ধাপে ধাপে ডেটা পড়া: একাধিক উৎসের ডেটাকে ধারাবাহিকভাবে পড়তে সহায়ক।

সীমাবদ্ধতা:

  1. বাইনারি ডেটা: যদিও এটি বাইনারি ডেটা ম্যানিপুলেট করতে পারে, তবে এটি কেবল InputStream (যা byte stream), সুতরাং Character Streams এর মতো ফাইলের টেক্সট ডেটার জন্য উপযুক্ত নয়।
  2. Memory Consumption: যদি অনেক বড় ফাইল একত্রিত করতে হয়, তবে এটি মেমোরি ব্যবহারে সমস্যার সৃষ্টি করতে পারে।
  3. Only Two Streams: SequenceInputStream শুধুমাত্র দুটি ইনপুট স্ট্রিম মার্জ করতে সাহায্য করে। তবে একাধিক স্ট্রিম মার্জ করার জন্য আপনাকে একাধিক SequenceInputStream বা কাস্টম কোড ব্যবহার করতে হতে পারে।

  • SequenceInputStream ক্লাসটি একাধিক InputStream কে মার্জ করার জন্য খুবই কার্যকরী। এটি ডেটা সিকোয়েন্সিয়ালি (ধাপে ধাপে) পড়ে এবং একটি একক স্ট্রিমে রূপান্তরিত করে।
  • এটি multiple files বা অন্যান্য ইনপুট সোর্সের ডেটা একত্রিত করার জন্য বিশেষভাবে উপযোগী।
  • যদিও এটি একাধিক স্ট্রিম মার্জ করতে সাহায্য করে, তবে কিছু সীমাবদ্ধতা রয়েছে যেমন কেবল দুটি স্ট্রিম একত্রিত করা সম্ভব, এবং বাইনারি ডেটা সাপোর্ট করা হয়।

Java Tuples ব্যবহার করে আপনি একত্রিত ডেটার বিভিন্ন প্রপার্টি যেমন ফাইলের নাম, আকার, ইত্যাদি সংরক্ষণ করতে পারেন এবং পরে সেই তথ্য ব্যবহার করতে পারেন।

Content added By

উদাহরণ সহ SequenceInputStream ব্যবহার

130
130

SequenceInputStream হল Java I/O ক্লাস যা একাধিক ইনপুট স্ট্রিমকে একত্রিত করে একটি সিকোয়েন্স আকারে ডেটা পড়তে ব্যবহৃত হয়। এটি বিভিন্ন ইনপুট স্ট্রিমকে একটি একক স্ট্রিমের মতো পরিচালনা করে এবং প্রথম স্ট্রিম থেকে শেষ হওয়া ডেটা পরবর্তী স্ট্রিমে পাঠাতে থাকে। এটি বিশেষভাবে উপকারী যখন আপনাকে একাধিক ফাইল বা ডেটা স্ট্রিম থেকে ডেটা একসাথে পড়তে হয়।

SequenceInputStream এর ধারণা

SequenceInputStream একাধিক ইনপুট স্ট্রিমকে একটি স্ট্রিমে একত্রিত করে, যা একে একে স্ট্রিমগুলির ডেটা পড়তে সক্ষম। এটি InputStream এর একটি সাবক্লাস এবং সাধারণত FileInputStream, ByteArrayInputStream ইত্যাদি স্ট্রিমের সাথে ব্যবহৃত হয়।

SequenceInputStream এর মৌলিক ব্যবহার

SequenceInputStream দুটি বা তার অধিক InputStream যুক্ত করতে সক্ষম।

Syntax:

SequenceInputStream(InputStream s1, InputStream s2);

এখানে s1 এবং s2 দুটি ইনপুট স্ট্রিম, যা একে অপরের পর পর পড়া হবে।


SequenceInputStream ব্যবহার করার উদাহরণ

একাধিক ফাইল থেকে ডেটা পড়া

ধরা যাক আমাদের দুটি টেক্সট ফাইল রয়েছে (file1.txt এবং file2.txt) এবং আমরা তাদের একসাথে একটি ফাইলে পড়তে চাই।

ফাইল ১ (file1.txt):

Hello, this is file 1.

ফাইল ২ (file2.txt):

And this is file 2.

SequenceInputStream উদাহরণ:

import java.io.FileInputStream;
import java.io.IOException;
import java.io.SequenceInputStream;

public class SequenceInputStreamExample {
    public static void main(String[] args) {
        String file1 = "file1.txt";
        String file2 = "file2.txt";
        
        try (FileInputStream fileInputStream1 = new FileInputStream(file1);
             FileInputStream fileInputStream2 = new FileInputStream(file2);
             SequenceInputStream sequenceInputStream = new SequenceInputStream(fileInputStream1, fileInputStream2)) {

            int data;
            while ((data = sequenceInputStream.read()) != -1) {
                System.out.print((char) data); // Print data character by character
            }

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

ব্যাখ্যা:

  • এখানে দুটি FileInputStream (fileInputStream1 এবং fileInputStream2) তৈরি করা হয়েছে, যা দুটি ফাইল থেকে ডেটা পড়তে ব্যবহৃত হবে।
  • তারপর SequenceInputStream ব্যবহার করা হয়েছে, যা এই দুটি স্ট্রিমকে একত্রিত করবে এবং সেগুলির ডেটা ধারাবাহিকভাবে পড়বে।

আউটপুট:

Hello, this is file 1.And this is file 2.

SequenceInputStream ব্যবহার করে Multiple Streams একত্রিত করা

SequenceInputStream এর মাধ্যমে একাধিক স্ট্রিম একত্রিত করা যায়। নিম্নলিখিত উদাহরণে, আমরা একটি ByteArrayInputStream এবং একটি FileInputStream একত্রিত করে তাদের ডেটা পড়ব।

উদাহরণ:

import java.io.ByteArrayInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.SequenceInputStream;

public class MultipleStreamsExample {
    public static void main(String[] args) {
        String text = "This is data from ByteArrayInputStream.";
        String filePath = "file2.txt"; // Assume this file exists

        try (ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(text.getBytes());
             FileInputStream fileInputStream = new FileInputStream(filePath);
             SequenceInputStream sequenceInputStream = new SequenceInputStream(byteArrayInputStream, fileInputStream)) {

            int data;
            while ((data = sequenceInputStream.read()) != -1) {
                System.out.print((char) data); // Print data from both streams
            }

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

ব্যাখ্যা:

  • এখানে ByteArrayInputStream এবং FileInputStream দুটি স্ট্রিম তৈরি করা হয়েছে।
  • SequenceInputStream দুটি স্ট্রিমের ডেটাকে একত্রিত করে sequentially পড়ছে।
  • byteArrayInputStream থেকে প্রথমে ডেটা পড়া হচ্ছে, তারপর fileInputStream থেকে ডেটা পড়া হচ্ছে।

আউটপুট:

This is data from ByteArrayInputStream. (Contents of file2.txt)

Tuples এবং SequenceInputStream এর Integration

Tuples ব্যবহার করে একাধিক ভ্যালু সংরক্ষণ এবং SequenceInputStream এর মাধ্যমে ডেটা পড়া এবং প্রক্রিয়া করা সহজভাবে করা যায়। এটি কার্যকরভাবে ডেটা সংরক্ষণ এবং একাধিক স্ট্রিম একত্রিত করতে সাহায্য করতে পারে।

উদাহরণ: Tuples এবং SequenceInputStream একসাথে ব্যবহার

import org.javatuples.Pair;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.SequenceInputStream;

public class TupleWithSequenceInputStreamExample {
    public static void main(String[] args) {
        // Tuple containing file paths
        Pair<String, String> files = Pair.with("file1.txt", "file2.txt");

        try (FileInputStream fileInputStream1 = new FileInputStream(files.getValue0());
             FileInputStream fileInputStream2 = new FileInputStream(files.getValue1());
             SequenceInputStream sequenceInputStream = new SequenceInputStream(fileInputStream1, fileInputStream2)) {

            int data;
            while ((data = sequenceInputStream.read()) != -1) {
                System.out.print((char) data); // Print data from both files
            }

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

ব্যাখ্যা:

  • Pair<String, String> files Tuple ব্যবহার করে ফাইল পাথগুলো সংরক্ষণ করা হয়েছে।
  • SequenceInputStream ব্যবহার করে দুটি ফাইল থেকে ডেটা একত্রিতভাবে পড়া হচ্ছে।

আউটপুট:

Hello, this is file 1.And this is file 2.

SequenceInputStream এর সুবিধা

  1. Multiple Streams Handling:
    • একাধিক ইনপুট স্ট্রিমের ডেটা একত্রিত করে পড়ার সুবিধা।
  2. Readable Code:
    • কোড সহজ এবং কমপ্যাক্ট, যেখানে একাধিক স্ট্রিম ব্যবহার করা হচ্ছে।
  3. Memory Efficient:
    • ডেটার প্রতিটি স্ট্রিম মেমরি ব্যবহার কম করে, যেহেতু এটি একে একে ডেটা পড়ে।
  4. Flexibility:
    • স্ট্রিমগুলিকে ডায়নামিকভাবে যুক্ত করা যায় এবং SequenceInputStream দ্বারা প্রসেস করা যায়।

SequenceInputStream হল একটি শক্তিশালী Java ক্লাস যা একাধিক ইনপুট স্ট্রিমকে একত্রিত করে একটি সিকোয়েন্স আকারে ডেটা পড়তে সাহায্য করে। এটি ফাইল থেকে একাধিক ডেটা পড়া, স্ট্রিমের সংমিশ্রণ, এবং কার্যকর ডেটা ম্যানিপুলেশনে সহায়ক। Tuples ব্যবহার করলে ডেটার গঠন আরও সহজ এবং রিডেবল হয়, যা ডেটা প্রসেসিং আরও দক্ষ করে তোলে।

Content added By
Promotion